1. Field of the Invention
This invention relates to computer systems, and more particularly, to methods and apparatus for providing advanced audio in such systems.
2. History of the Prior Art
A substantial amount of development is presently being directed to providing additional features to personal computers so that they may be utilized as centers of communication and information rather than simply as work stations for individual operators. A great portion of this development is directed toward including features such as sound and video already found in other forms of electronic circuitry.
Until very recently, the sound capabilities of personal computers have been very limited. The personal computer was not originally conceived as including an advanced sound system because of the very extensive amount of data which must be transferred in such a sound system. The personal computer with its relatively narrow bus bandwidth was not adapted to provide this transfer rate. This is particularly true with computer systems running multiprocessing operating systems in which the computer bus bandwidth is generally expected to be used simultaneously by a number of different programs. Thus, the sounds computers were originally adapted to provide were, in general, only intended to alert the operator to some action having been completed by the computer or needing attention by the operator.
The original and still most common system bus for the personal computer is called the industry standard (ISA) bus. The ISA bus is narrow and slow. It is able to transfer only sixteen bits of data simultaneously and functions at a maximum clock frequency of eight megahertz. The ISA bus is capable of transferring data at a sustained rate of approximately four megabytes per second.
The earliest feasible technique of producing sound electronically is called FM synthesis. This technique involves generating a tone at a frequency used by an instrument. Low quality sound boards used FM synthesis to provide a single (or a few) frequencies to emulate an instrument. When a basic tone is combined with various overtones which are typically generated by a particular instrument, a sound is produced which may be distinguished as that of a particular instrument but which is often unacceptable to audiophiles. This method of producing sound is still used in inexpensive computer sound systems.
A better method used to produce higher quality sound utilizes what are referred to as wave tables. A wave table is generated by sampling a sound from an instrument, storing that complex sound in memory, and then repeating the sound stored at different frequencies to make all the notes of the instrument. In order to obtain more accurate sounds for an instrument, a number of samples are taken at different frequencies and then combined by a sound generation controller to produce the notes between the sampled frequencies. The more samples of the sound which are used for any instrument, the better the sound quality produced. The sound generation controller is used to rate convert the samples and play the sounds in a pattern provided by a central processing unit (CPU). The pattern typically designates the pitch, attack rate, and decay rate of the various notes for each instrument, the sequence of notes, and various recognizable modulations such as tremolo, and specifies the various instruments which are to be added together to produce the sounds. For example, an orchestra may include fifty or more instruments playing at once. The result is that if more memory is used, better results are produced.
As has been pointed out, the ISA bus is capable of transferring approximately four megabytes of data per second. On the other hand, to generate high quality audio for a number instruments requires the transfer of approximately the same amount of data. Thus, if the CPU and the system bus are used in order to carry out the sound generation in a multiprocessing system, carrying out the other functions of the computer including running other application programs becomes impossible. Consequently, additional memory has always been added to the computer and positioned with a sound generation controller on a peripheral sound board in order to handle the generation and manipulation of sound using wave tables.
Wave table sound boards are typically implemented by putting a significant amount of memory on a sound board along with the sound generation controller. Inexpensive wave table sound boards often use read only memory (ROM) to store sounds on the sound board which are simply played by the board controller. Higher quality wave table sound boards utilize random access memory (RAM) to store sounds so that the sounds can be varied to meet the user's needs. Thus, low quality wave table sound boards often have one megabyte of storage while high quality wave table sound boards may use up to four megabytes of RAM.
Thus, for high quality sound, a large amount (e.g., four megabytes) of RAM is positioned on a wave table sound board so that the bus is not involved in the sound generation. Then, when the sound program starts, the CPU moves the signals representing the wave table sounds to the RAM on the sound board; and the sound generation controller manipulates the sound stored by the local RAM on the sound board. After the CPU moves the wave table sound data to the memory on the sound board using the system bus, neither the CPU or the bus is involved in the operation of generating sound except for providing the notes, the note sequences, and the combinations of instruments to be produced. However, the four extra megabytes of RAM on a sound board costs the user about one hundred and fifty dollars at present. Moreover, a sound board has a fixed amount of memory which can be used in generating sounds, an amount which may be insufficient for many purposes.
It is desirable to be able to produce high quality sound in a personal computer system without the added cost of memory normally attendant on such production. Moreover, it is desirable to be able to produce any number of individual sounds simultaneously without the need to increase the memory available on a sound board.